内容检查
内容检查或者应用签名能够阻止正式应用中加载非签名文件 . 提供密钥对 , 'verified_contents.json'文件为应用的签名文件 , 通过'sign.py'工具创建私钥文件private_key.pem
. 公钥文件构建在NW.js应用中 . 在应用目录中调用nw --verify-content=enforce_strict .
命令 , 之后显示签名页面 , 完成签名动作 . 之后对index.html文件进行一些修改 , 再次运行应用 , NW将提示文件不可用并退出 .
!!! 注意 内容检查或者应用签名不能阻止有些人黑进你的应用 , 或者使用其他NW代码加载你的应用 . 可以考虑使用C++编写 , Node.js和NaCl加载 , 以及nwjc编译JS代码
应用签名
使用密钥对签名应用 , 步骤如下:
- 切换到应用目录中 .
- 确认
verified_contents.json
orcomputed_hashes.json
文件不在当前目录 , 如果存在删除 . - 运行
payload.exe
生成payload.json
文件 , 作为sign.py
的配置文件 - 运行
python sign.py > /tmp/verified_contents.json
, 需要注意tmp目录不能是应用所在目录 . - 将生成的
verified_contents.json
文件拷贝到应用目录 , 完成签名动作 .
通过密钥对重新构建应用
重修构造NW , 使密钥对生效 . 构建过程需要使用命令行参数--verify-content=
, 同时需要设置enforce_strict
openssl genrsa -out private_key.pem 2048
生成密钥对 , 输出公钥和私钥两个文件- 运行
python convertkey.py
, 生成的C代码将覆盖公钥文件原有内容 . - 将生成的代码复制到
content/nw/src/nw_content_verifier_delegate.cc
, 替换原文件的默认key值 . - 更改文件中第73行为
Mode experiment_value = ContentVerifierDelegate::ENFORCE_STRICT;
- 重新构建NW
工具中 , 样例应用和样例私钥在tools/sign
目录中 . 该样例私钥匹配官方构建NW公钥 .